home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
EnigmA Amiga Run 1995 October
/
EnigmA AMIGA RUN 01 (1995)(G.R. Edizioni)(IT)[!][issue 1995-10][Aminet 7].iso
/
Aminet
/
dev
/
m2
/
ModGen.lha
/
ModGen
/
Source
/
ReqTools.def
< prev
next >
Wrap
Text File
|
1995-04-20
|
21KB
|
619 lines
(* ------------------------------------------------------------------------
:Program. ReqTools
:Contents. Interface to Nico François' reqtools.library
:Author. Kai Bolay [kai] (C-Version by Nico François)
:Address. Hoffmannstraße 168
:Address. D-7250 Leonberg 1 (Germany)
:Address. UUCP: ...!cbmvax!cbmehq!cbmger!depot1!amokle!kai
:Address. FIDO: 2:247/706.3
:History. v1.0 [kai] 22-Nov-91 (translated from C)
:History. v1.0m [Frank Lömker] 24-Feb-92 Umsetzung nach Modula
:History. v2.0m [Frank Lömker] 10-Aug-92 ReqTools V38
:History. ReqToolsBase korrigiert
:History. v2.0t [Frank Lömker] 17-Apr-95 (Umsetzung nach Turbo Modula)
:Copyright. Freeware
:Language. Modula-2
:Translator. Turbo Modula-2 V1.40
:Remark. Thanks to Nico for his great library
:Bugs. ReqTools/Arq should support each other
:Bugs. Font-Hook: ta.name can contain odd pointer :-(
------------------------------------------------------------------------ *)
(*
** Filename: reqtools.def
** Release: 2.0
**
** Modula interface.
**
** (C) Copyright 1991/1992 Nico François
** All Rights Reserved
*)
DEFINITION FOR LIBRARY MODULE ReqTools;
FROM Intuition IMPORT IntuitionBasePtr,WindowPtr,ScreenPtr,NewWindow;
FROM Graphics IMPORT GfxBasePtr,TextFontPtr,TextAttr;
FROM Dos IMPORT DosLibraryPtr;
FROM Exec IMPORT Library,LibraryPtr;
FROM SYSTEM IMPORT ADDRESS,SHORTSET,LONGSET,BADDRESS,STRING;
FROM Utility IMPORT HookPtr,TagItem,TagItemPtr,Tag,TAG_USER;
CONST
ReqToolsName = "reqtools.library";
ReqToolsVersion = 38;
TYPE
reqToolsBasePtr = POINTER TO reqToolsBase;
VAR ReqToolsBase:reqToolsBasePtr;
TYPE
reqToolsBase = RECORD
libNode: Library;
RTflags: SHORTSET;
pad1,pad2,pad3:SHORTINT;
segList: BADDRESS;
(* The following library bases may be read and used by your program *)
intuitionBase: IntuitionBasePtr;
gfxBase: GfxBasePtr;
dosBase: DosLibraryPtr;
(* Next two library bases are only (and always) valid on Kickstart 2.0!
(1.3 version of reqtools also initializes these when run on 2.0) *)
gadToolsBase: LibraryPtr;
utilityBase: LibraryPtr;
END;
CONST
(* types of requesters, for AllocRequestA() *)
TypeFileReq = 0;
TypeReqInfo = 1;
TypeFontReq = 2;
TypeScreenModeReq = 3;
(***********************
* *
* File requester *
* *
***********************)
(* structure _MUST_ be allocated with AllocRequest() *)
TYPE
FileRequesterPtr = POINTER TO FileRequester;
FileRequester = RECORD
reqPos: LONGINT;
leftOffset: INTEGER;
topOffset: INTEGER;
flags: LONGSET;
(* OBSOLETE IN V38! DON'T USE! *) hook: HookPtr;
dir: STRING; (* READ ONLY! Change with ChangeReqAttrA()! *)
matchPat: STRING; (* READ ONLY! Change with ChangeReqAttrA()! *)
defaultFont: TextFontPtr;
waitPointer: ADDRESS;
(* V38 *)
lockWindow: LONGINT;
shareIDCMP: LONGINT;
intuiMsgFunc: HookPtr;
reserved1: INTEGER;
reserved2: INTEGER;
reserved3: INTEGER;
reqHeight: INTEGER; (* READ ONLY! Use RTFI_Height tag! *)
(* Private data follows! HANDS OFF :-) *)
END;
(* returned by FileRequestA() if multiselect is enabled,
free list with FreeFileList() *)
FileListPtr = POINTER TO FileList;
FileList = RECORD
next: FileListPtr;
strLen: LONGINT; (* -1 for directories *)
name: STRING;
END;
(* structure passed to RTFI_FilterFunc callback hook by
volume requester (see RTFI_VolumeRequest tag) *)
VolumeEntryPtr = POINTER TO VolumeEntry;
VolumeEntry = RECORD
type: LONGINT; (* DLT_DEVICE or DLT_DIRECTORY *)
name: STRING;
END;
(***********************
* *
* Font requester *
* *
***********************)
(* structure _MUST_ be allocated with AllocRequest() *)
FontRequesterPtr = POINTER TO FontRequester;
FontRequester = RECORD
reqPos: LONGINT;
leftOffset: INTEGER;
topOffset: INTEGER;
flags: LONGSET;
(* OBSOLETE IN V38! DON'T USE! *) hook: HookPtr;
attr: TextAttr; (* READ ONLY! *)
defaultFont: TextFontPtr;
waitPointer: ADDRESS;
(* V38 *)
lockWindow: LONGINT;
shareIDCMP: LONGINT;
intuiMsgFunc: HookPtr;
reserved1: INTEGER;
reserved2: INTEGER;
reserved3: INTEGER;
reqHeight: INTEGER; (* READ ONLY! Use RTFI_Height tag! *)
(* Private data follows! HANDS OFF :-) *)
END;
(*************************
* *
* ScreenMode requester *
* *
*************************)
(* structure _MUST_ be allocated with rtAllocRequest() *)
ScreenModeRequesterPtr = POINTER TO ScreenModeRequester;
ScreenModeRequester = RECORD
reqPos: LONGINT;
leftOffset: INTEGER;
topOffset: INTEGER;
flags: LONGSET;
private1: LONGINT;
displayID: LONGINT; (* READ ONLY! *)
displayWidth: INTEGER; (* READ ONLY! *)
displayHeight: INTEGER; (* READ ONLY! *)
defaultFont: TextFontPtr;
waitPointer: ADDRESS;
lockWindow: LONGINT;
shareIDCMP: LONGINT;
intuiMsgFunc: HookPtr;
reserved1: INTEGER;
reserved2: INTEGER;
reserved3: INTEGER;
reqHeight: INTEGER; (* READ ONLY! Use RTFI_Height tag! *)
displayDepth: INTEGER;
overscanType: INTEGER;
autoScroll: LONGINT;
(* Private data follows! HANDS OFF :-) *)
END;
(***********************
* *
* Requester Info *
* *
***********************)
(* for EZRequestA(), GetLongA(), GetStringA() and PaletteRequestA(),
_MUST_ be allocated with AllocRequest() *)
ReqInfoPtr = POINTER TO ReqInfo;
ReqInfo = RECORD
reqPos: LONGINT;
leftOffset: INTEGER;
topOffset: INTEGER;
width: LONGINT; (* not for EZRequestA() *)
reqTitle: STRING; (* currently only for EZRequestA() *)
flags: LONGSET;
defaultFont: TextFontPtr; (* currently only for PaletteRequestA() *)
waitPointer: ADDRESS;
(* V38 *)
lockWindow: LONGINT;
shareIDCMP: LONGINT;
intuiMsgFunc: HookPtr;
(* structure may be extended in future *)
END;
(***********************
* *
* Handler Info *
* *
***********************)
(* for ReqHandlerA(), will be allocated for you when you use
the ReqHandler tag, never try to allocate this yourself! *)
HandlerInfoPtr = POINTER TO HandlerInfo;
HandlerInfo = RECORD
private1: LONGINT;
waitMask: LONGSET;
doNotWait: LONGINT (* LONGBOOL *); (* ? *)
(* Private data follows, HANDS OFF :-) *)
END;
(* possible return codes from ReqHandlerA() *)
CONST
CallHandler = 080000000H;
(*************************************
* *
* TAGS *
* *
*************************************)
TagBase = TAG_USER;
(*** tags understood by most requester functions ***)
(* optional pointer to window *)
Window = TagBase+1;
(* idcmp flags requester should abort on (useful for IDCMP_DISKINSERTED) *)
IDCMPFlags = TagBase+2;
(* position of requester window (see below) - default REQPOS_POINTER *)
ReqPos = TagBase+3;
(* leftedge offset of requester relative to position specified by RT_ReqPos *)
LeftOffset = TagBase+4;
(* topedge offset of requester relative to position specified by ReqPos *)
TopOffset = TagBase+5;
(* name of public screen to put requester on (Kickstart 2.0 only!) *)
PubScrName = TagBase+6;
(* address of screen to put requester on *)
Screen = TagBase+7;
(* tagdata must hold the address of (!) an APTR variable *)
DoReqHandler = TagBase+8;
(* font to use when screen font is rejected, _MUST_ be fixed-width font!
(struct TextFont *, not struct TextAttr *!)
- default GfxBase->DefaultFont *)
DefaultFont = TagBase+9;
(* boolean to set the standard wait pointer in window - default FALSE *)
WaitPointer = TagBase+10;
(* (V38) char preceding keyboard shortcut characters (will be underlined) *)
Underscore = TagBase+11;
(* (V38) share IDCMP port with window - default FALSE *)
ShareIDCMP = TagBase+12;
(* (V38) lock window and set standard wait pointer - default FALSE *)
LockWindowTag = TagBase+13;
(* (V38) boolean to make requester's screen pop to front - default TRUE *)
ScreenToFront = TagBase+14;
(* (V38) Requester should use this font - default: screen font *)
Textattr = TagBase+15;
(* (V38) call this hook for every IDCMP message not for requester *)
IntuiMsgFunc = TagBase+16;
(* (V38) Locale ReqTools should use for text *)
Locale = TagBase+17;
(*** tags specific to EZRequestA ****)
(* title of requester window - default "Request" or "Information" *)
ezReqTitle = TagBase+20;
(* TagBase+21 reserved *)
(* various flags (see below) *)
ezFlags = TagBase+22;
(* default response (activated by pressing RETURN) - default TRUE *)
ezDefaultResponse = TagBase+23;
(*** tags specific to GetLongA ****)
(* minimum allowed value - default MININT *)
glMin = TagBase+30;
(* maximum allowed value - default MAXINT *)
glMax = TagBase+31;
(* suggested width of requester window (in pixels) *)
glWidth = TagBase+32;
(* boolean to show the default value - default TRUE *)
glShowDefault = TagBase+33;
(* (V38) string with possible responses - default " _Ok |_Cancel" *)
glGadFmt = TagBase+34;
(* (V38) optional arguments for RTGL_GadFmt *)
glGadFmtArgs = TagBase+35;
(* (V38) invisible typing - default FALSE *)
glInvisible = TagBase+36;
(* (V38) window backfill - default TRUE *)
glBackFill = TagBase+37;
(* (V38) optional text above gadget *)
glTextFmt = TagBase+38;
(* (V38) optional arguments for RTGS_TextFmt *)
glTextFmtArgs = TagBase+39;
(* (V38) various flags (see below) *)
glFlags = ezFlags;
(*** tags specific to GetStringA ****)
(* suggested width of requester window (in pixels) *)
gsWidth = glWidth;
(* allow empty string to be accepted - default FALSE *)
gsAllowEmpty = TagBase+80;
(* (V38) string with possible responses - default " _Ok |_Cancel" *)
gsGadFmt = glGadFmt;
(* (V38) optional arguments for RTGS_GadFmt *)
gsGadFmtArgs = glGadFmtArgs;
(* (V38) invisible typing - default FALSE *)
gsInvisible = glInvisible;
(* (V38) window backfill - default TRUE *)
gsBackFill = glBackFill;
(* (V38) optional text above gadget *)
gsTextFmt = glTextFmt;
(* (V38) optional arguments for RTGS_TextFmt *)
gsTextFmtArgs = glTextFmtArgs;
(* (V38) various flags (see below) *)
gsFlags = ezFlags;
(*** tags specific to FileRequestA ****)
(* various flags (see below) *)
fiFlags = TagBase+40;
(* suggested height of file requester *)
fiHeight = TagBase+41;
(* replacement text for 'Ok' gadget (max 6 chars) *)
fiOkText = TagBase+42;
(* (V38) bring up volume requester, tag data holds flags (see below) *)
fiVolumeRequest = TagBase+43;
(* (V38) call this hook for every file in the directory *)
fiFilterFunc = TagBase+44;
(* (V38) allow empty file to be accepted - default FALSE *)
fiAllowEmpty = TagBase+45;
(*** tags specific to FontRequestA ****)
(* various flags (see below) *)
foflags = fiFlags;
(* suggested height of font requester *)
foHeight = fiHeight;
(* replacement text for 'Ok' gadget (max 6 chars) *)
foOkText = fiOkText;
(* suggested height of font sample display - default 24 *)
foSampleHeight= TagBase+60;
(* minimum height of font displayed *)
foMinHeight = TagBase+61;
(* maximum height of font displayed *)
foMaxHeight = TagBase+62;
(* [TagBase+63 to TagBase+66 used below] *)
(* (V38) call this hook for every font *)
foFilterFunc = fiFilterFunc;
(*** (V38) tags for rtScreenModeRequestA ****)
(* various flags (see below) *)
scFlags = fiFlags;
(* suggested height of screenmode requester *)
scHeight = fiHeight;
(* replacement text for 'Ok' gadget (max 6 chars) *)
scOkText = fiOkText;
(* property flags (see also RTSC_PropertyMask) *)
scPropertyFlags = TagBase+90;
(* property mask - default all bits in RTSC_PropertyFlags considered *)
scPropertyMask = TagBase+91;
(* minimum display width allowed *)
scMinWidth = TagBase+92;
(* maximum display width allowed *)
scMaxWidth = TagBase+93;
(* minimum display height allowed *)
scMinHeight = TagBase+94;
(* maximum display height allowed *)
scMaxHeight = TagBase+95;
(* minimum display depth allowed *)
scMinDepth = TagBase+96;
(* maximum display depth allowed *)
scMaxDepth = TagBase+97;
(* call this hook for every display mode id *)
scFilterFunc = fiFilterFunc;
(*** tags for ChangeReqAttrA ****)
(* file requester - set directory *)
fiDir = TagBase+50;
(* file requester - set wildcard pattern *)
fiMatchPat = TagBase+51;
(* file requester - add a file or directory to the buffer *)
fiAddEntry = TagBase+52;
(* file requester - remove a file or directory from the buffer *)
fiRemoveEntry = TagBase+53;
(* font requester - set font name of selected font *)
foFontName = TagBase+63;
(* font requester - set font size *)
foFontHeight = TagBase+64;
(* font requester - set font style *)
foFontStyle = TagBase+65;
(* font requester - set font flags *)
foFontFlags = TagBase+66;
(* (V38) screenmode requester - get display attributes from screen *)
scModeFromScreen = TagBase+80;
(* (V38) screenmode requester - set display mode id (32-bit extended) *)
scDisplayID = TagBase+81;
(* (V38) screenmode requester - set display width *)
scDisplayWidth = TagBase+82;
(* (V38) screenmode requester - set display height *)
scDisplayHeight = TagBase+83;
(* (V38) screenmode requester - set display depth *)
scDisplayDepth = TagBase+84;
(* (V38) screenmode requester - set overscan type, 0 for regular size *)
scOverscanType = TagBase+85;
(* (V38) screenmode requester - set autoscroll *)
scAutoScroll = TagBase+86;
(*** tags for PaletteRequestA ****)
(* initially selected color - default 1 *)
paColor = TagBase+70;
(*** tags for ReqHandlerA ****)
(* end requester by software control, set tagdata to REQ_CANCEL, REQ_OK
or in case of EZRequest to the return value *)
rhEndRequest = TagBase+60;
(*** tags for AllocRequestA ***)
(* no tags defined yet *)
(************
* ReqPos *
************)
ReqPosPointer = 0;
ReqPosCenterWin = 1;
ReqPosCenterScr = 2;
ReqPosTopLeftWin = 3;
ReqPosTopLeftScr = 4;
(******************
* RTRH_EndRequest *
******************)
ReqCancel = 0;
ReqOK = 1;
(***************************************
* flags for RTFI_Flags and RTFO_Flags *
* or filereq->Flags and fontreq->Flags *
***************************************)
fReqNoBuffer = 2;
(*****************************************
* flags for RTFI_Flags or filereq->Flags *
*****************************************)
fReqMultiSelect = 0;
fReqSave = 1;
fReqNoFiles = 3;
fReqPatGad = 4;
fReqSelectDirs = 12;
(*****************************************
* flags for RTFO_Flags or fontreq->Flags *
*****************************************)
fReqFixedWidth = 5;
fReqColorFonts = 6;
fReqChangePalette = 7;
fReqLeavePalette = 8;
fReqScale = 9;
fReqStyle = 10;
(*****************************************************
* (V38) flags for RTSC_Flags or screenmodereq->Flags *
*****************************************************)
scReqSizeGads = 13;
scReqDepthGad = 14;
scReqNonStdModes =15;
scReqGuiModes = 16;
scReqAutoscrollGad =18;
scReqOverscanGad =19;
(*****************************************
* flags for RTEZ_Flags or reqinfo->Flags *
*****************************************)
ezReqNoReturnKey = 0;
ezReqLamigaQual = 1;
ezReqCenterText = 2;
(***********************************************
* (V38) flags for RTGL_Flags or reqinfo->Flags *
***********************************************)
glReqCenterText = ezReqCenterText;
glReqHighlightText = 3;
(***********************************************
* (V38) flags for RTGS_Flags or reqinfo->Flags *
***********************************************)
gsReqCenterText = ezReqCenterText;
gsReqHighlightText = glReqHighlightText;
(*****************************************
* (V38) flags for RTFI_VolumeRequest tag *
*****************************************)
vReqNoAssigns = 0;
vReqNoDisks = 1;
vReqAllDisks = 2;
(*
Following things are obsolete in ReqTools V38.
Don't use them in new code!
*)
fReqDoWildFunc = 11;
ReqHookWildFile = 0;
ReqHookWildFont = 1;
PROCEDURE rtAllocRequestA (type: LONGINT;
tagList: TagItemPtr): ADDRESS;
PROCEDURE rtAllocRequest (type: LONGINT;
tag1: Tag; ..): ADDRESS;
PROCEDURE rtFreeRequest (req: ADDRESS);
PROCEDURE rtFreeReqBuffer (req: ADDRESS);
PROCEDURE rtChangeReqAttrA (req: ADDRESS;
tagList: TagItemPtr);
PROCEDURE rtChangeReqAttr (req: ADDRESS;
tag1: Tag; ..);
PROCEDURE rtFileRequestA (fileReq: FileRequesterPtr;
(*VAR*) fileName: STRING;
title: STRING;
tagList: TagItemPtr): BOOLEAN;
PROCEDURE rtFileRequest (fileReq: FileRequesterPtr;
(*VAR*) fileName: STRING;
title: STRING;
tag1: Tag; ..): BOOLEAN;
PROCEDURE rtFreeFileList (fileList: FileListPtr);
PROCEDURE rtEZRequestA (bodyfmt, gadfmt: STRING;
reqInfo: ReqInfoPtr;
argarray: ADDRESS;
tagList: TagItemPtr): LONGINT;
PROCEDURE rtEZRequestTags (bodyfmt, gadfmt: STRING;
reqInfo: ReqInfoPtr;
argarray: ADDRESS;
tag1: Tag; ..):LONGINT;
PROCEDURE rtEZRequest (bodyfmt, gadfmt: STRING;
reqInfo: ReqInfoPtr;
tagList: TagItemPtr;
argarray: LONGINT; ..): LONGINT;
PROCEDURE rtGetStringA ((*VAR*) buffer: STRING;
maxchars: LONGINT;
title: STRING;
reqInfo: ReqInfoPtr;
tagList: TagItemPtr): BOOLEAN;
PROCEDURE rtGetString ((*VAR*) buffer: STRING;
maxchars: LONGINT;
title: STRING;
reqInfo: ReqInfoPtr;
tag1: Tag; ..): BOOLEAN;
PROCEDURE rtGetLongA (VAR long: LONGINT; title: STRING;
reqInfo: ReqInfoPtr;
tagList: TagItemPtr): BOOLEAN;
PROCEDURE rtGetLong (VAR long: LONGINT; title: STRING;
reqInfo: ReqInfoPtr;
tag1: Tag; ..): BOOLEAN;
PROCEDURE rtFontRequestA (fontReq: FontRequesterPtr;
title: STRING;
tagList: TagItemPtr): BOOLEAN ;
PROCEDURE rtFontRequest (fontReq: FontRequesterPtr;
title: STRING;
tag1: Tag; ..):BOOLEAN ;
PROCEDURE rtPaletteRequestA (title: STRING;
reqInfo: ReqInfoPtr;
tagList: TagItemPtr): LONGINT;
PROCEDURE rtPaletteRequest (title: STRING;
reqInfo: ReqInfoPtr;
tag1: Tag; ..): LONGINT;
PROCEDURE rtReqHandlerA (hinfo: HandlerInfoPtr;
sigs: LONGSET;
tagList: TagItemPtr): LONGINT;
PROCEDURE rtReqHandler (hinfo: HandlerInfoPtr;
sigs: LONGSET;
tag1: Tag; ..): LONGINT;
PROCEDURE rtSetWaitPointer (window: WindowPtr);
PROCEDURE rtGetVScreenSize (screen: ScreenPtr;
VAR width,height: LONGINT);
PROCEDURE rtSetReqPosition (reqpos: LONGINT;
VAR nw: NewWindow;
screen: ScreenPtr;
window: WindowPtr);
PROCEDURE rtSpread ((*VAR*) posarray: ADDRESS (*ARRAY OF LONGINT*);
sizearray: ADDRESS (*ARRAY OF LONGINT*);
totalsize, min, max, num: LONGINT);
PROCEDURE rtScreenToFrontSafely (screen: ScreenPtr);
(*--- functions in V38 or higher (distributed as Release 2.0) ---*)
PROCEDURE rtScreenModeRequestA (screenmodeReq: ScreenModeRequesterPtr;
title: STRING;
tagList: TagItemPtr): BOOLEAN;
PROCEDURE rtScreenModeRequest (screenmodeReq: ScreenModeRequesterPtr;
title: STRING;
tag1: Tag; ..): BOOLEAN;
PROCEDURE rtCloseWindowSafely (window: WindowPtr);
PROCEDURE rtLockWindow (window: WindowPtr): LONGINT;
PROCEDURE rtUnlockWindow (window: WindowPtr;
winlock: LONGINT);
END ReqTools.